package com.abewy.android.apps.klyph.core.fql.serializer;
import java.util.ArrayList;
import org.json.JSONObject;
import com.abewy.android.apps.klyph.core.fql.Message;
import com.abewy.android.apps.klyph.core.fql.Message.Attachment;
import com.abewy.android.apps.klyph.core.fql.Message.Media;
import com.abewy.android.apps.klyph.core.fql.Message.Music;
import com.abewy.android.apps.klyph.core.fql.Message.Properties;
import com.abewy.android.apps.klyph.core.fql.Message.Video;
import com.abewy.android.apps.klyph.core.graph.GraphObject;
public class MessageDeserializer extends Deserializer
{
@Override
public GraphObject deserializeObject(JSONObject data)
{
Message message = new Message();
deserializePrimitives(message, data);
message.setAttachment((Attachment) new AttachmentDeserializer().deserializeObject(getJsonObject(data, "attachment")));
return message;
}
private static class AttachmentDeserializer extends Deserializer
{
@Override
public GraphObject deserializeObject(JSONObject data)
{
Attachment attachment = new Attachment();
deserializePrimitives(attachment, data);
attachment.setProperties(new PropertiesDeserializer().deserializeArray(getJsonArray(data, "properties"), Properties.class));
attachment.setMedia(new MediaDeserializer().deserializeArray(getJsonArray(data, "media"), Media.class));
return attachment;
}
}
private static class MediaDeserializer extends Deserializer
{
@Override
public GraphObject deserializeObject(JSONObject data)
{
Media media = new Media();
deserializePrimitives(media, data);
media.setVideo((Video) new VideoDeserializer().deserializeObject(getJsonObject(data, "video")));
if (getJsonArray(data, "other_sizes") != null)
media.setOther_sizes(new MediaDeserializer().deserializeArray(getJsonArray(data, "other_sizes"), Media.class));
else
media.setOther_sizes(new ArrayList<Media>());
return media;
}
}
private static class VideoDeserializer extends Deserializer
{
@Override
public GraphObject deserializeObject(JSONObject data)
{
Video video = new Video();
deserializePrimitives(video, data);
return video;
}
}
private static class MusicDeserializer extends Deserializer
{
@Override
public GraphObject deserializeObject(JSONObject data)
{
Music music = new Music();
deserializePrimitives(music, data);
return music;
}
}
private static class PropertiesDeserializer extends Deserializer
{
@Override
public GraphObject deserializeObject(JSONObject data)
{
Properties properties = new Properties();
deserializePrimitives(properties, data);
return properties;
}
}
}